package com.appsindy.reserv.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.appsindy.common.vo.UserVO;
import com.appsindy.reserv.bo.Combo;
import com.appsindy.reserv.bo.GenFreeRoom2TrackMap;
import com.appsindy.reserv.bo.Info4RoomMap;
import com.appsindy.reserv.bo.Payment2Shift;
import com.appsindy.reserv.bo.ReserveDetail;
import com.appsindy.reserv.bo.ReserveHeaderMap;
import com.appsindy.reserv.bo.ReserveInfo;
import com.appsindy.reserv.bo.ReserveInfoMap;
import com.appsindy.reserv.bo.ReserveItem;
import com.appsindy.reserv.bo.ReservePayment;
import com.appsindy.reserv.bo.ReservePaymentDetail;
import com.appsindy.reserv.bo.ReserveRoom;
import com.appsindy.reserv.bo.ReserveTypeOfRoom;
import com.appsindy.reserv.bo.RoomRateMap;
import com.appsindy.reserv.bo.ServiceHeader;
import com.appsindy.reserv.bo.ServiceResultMap;
import com.appsindy.reserv.vo.CalendarInfo;
import com.appsindy.reserv.vo.CustomerVO;
import com.appsindy.reserv.vo.DiscountVO;
import com.appsindy.reserv.vo.GroupInfoVO;
import com.appsindy.reserv.vo.Info;
import com.appsindy.reserv.vo.ItemVO;
import com.appsindy.reserv.vo.ReserveDetailVO;
import com.appsindy.reserv.vo.ReservePaymentDetailVO;
import com.appsindy.reserv.vo.ReservePaymentVO;
import com.appsindy.reserv.vo.ReservePrintReceiptVO;

public interface ReserveOverviewDAO {
			
    public List<Combo> getCombos(Map<String, Object> paramM);
    public List<Combo> getGroupCombos(Map<String, Object> paramM);
    public List<Combo> getCustomerCombos(Map<String, Object> paramM);
    public List<Combo> getRoomCombos(Map<String, Object> paramM);
    public List<Combo> getCustomerByHeaderCombos(Map<String, Object> paramM);
    public List<Combo> getStatusCombos(Map<String, Object> paramM);
    public List<Combo> getGroupPopupCombos(Map<String, Object> paramM);
    public List<Combo> getZoneCombos(Map<String, Object> paramM);
    public List<Combo> getFloorCombos(Map<String, Object> paramM);
    public List<Combo> getItemCombos(Map<String, Object> paramM);
    public List<Combo> getRoomCombosByTypeOfRoom(Map<String, Object> paramM);
    public List<Combo> getRoomCombosByHeader(Map<String, Object> paramM);
    public List<Combo> getProvinceCombos(Map<String, Object> paramM);
    
    public List<Info> selectGroup(Map<String, Object> paramM);
    public List<Info> selectGroupResultPopup(Map<String, Object> paramM);
    public List<Info> selectCustomer(Map<String, Object> paramM);
    public List<Info> selectCustomerResultPopup(Map<String, Object> paramM);
    public List<Info> selectRoom(Map<String, Object> paramM);
    public List<Info> selectRoomResultPopup(Map<String, Object> paramM);

    public void generateCalendar(Map<String, Object> paramM);
    public List<CalendarInfo> selectCalendar(Map<String, Object> paramM);
    public void generateReserveTypeOfRoom(Map<String, Object> paramM);
    public List<ReserveTypeOfRoom> selectGroupTypeOfRoom(Map<String, Object> paramM);
    public List<ReserveTypeOfRoom> selectGroupDate(Map<String, Object> paramM);
    public List<ReserveTypeOfRoom> selectReserveTypeOfRoom(Map<String, Object> paramM);
    public GroupInfoVO selectGroupInfo(Map<String, Object> paramM);
    public ItemVO getItemById(Map<String, Object> paramM);
    
    public void getRoomRate(@Param("parameterMap") RoomRateMap parameterMap); 
    public void getSeqHeader(@Param("parameterMap") ReserveInfoMap parameterMap); 
    public void clearReserveDetailTemp(@Param("parameterMap") ReserveInfoMap parameterMap); 
    public void insertReserveDetailTemp(ReserveInfo info);
    public void genFreeRoom2Track(@Param("parameterMap") GenFreeRoom2TrackMap parameterMap);  
    public void freeRoom2Track(@Param("parameterMap") GenFreeRoom2TrackMap parameterMap);  
    public Integer getShiftTransId(Map<String, Object> paramM);
    public void insertReserveService(@Param("parameterMap") ReserveHeaderMap parameterMap);
    public void insertReserveService4TypeOfRoom(@Param("parameterMap") ReserveHeaderMap parameterMap);
    public void deleteHtServiceHeaderSeq(Map<String, Object> paramM);
    public void deleteHtServiceDetailTemp(Map<String, Object> paramM);
    public void deleteHtServiceTrackRoom(Map<String, Object> paramM);
    
    public void getInfo4Room(@Param("parameterMap") Info4RoomMap parameterMap);
    public void generateReserveRoom(Map<String, Object> paramM);
    public List<ReserveRoom> selectGroupReserveRoom(Map<String, Object> paramM);
    public List<ReserveRoom> selectGroupReserveRoomDate(Map<String, Object> paramM);
    public List<ReserveRoom> selectReserveRoom(Map<String, Object> paramM);
    
    public void generateCustomerTreeList(Map<String, Object> paramM);
    public List<CustomerVO> selectCustomerTreeList(Map<String, Object> paramM);
    
    public List<ReserveDetailVO> selectReserveDetail(Map<String, Object> paramM);
    public List<ItemVO> selectReserveDetailItem(Map<String, Object> paramM);
    public List<CustomerVO> getCustomerById(Map<String, Object> paramM);
    public List<CustomerVO> getCustomerByPaymentId(Map<String, Object> paramM);
    public void getDetailRoomRate(@Param("parameterMap") RoomRateMap parameterMap);     
    
    public void insertCustomer(@Param("parameterMap") CustomerVO parameterMap);
    public void updateCustomer(@Param("parameterMap") CustomerVO parameterMap);
    public void updateServiceStatus4Room(Map<String, Object> paramM);
    public void updatePayment4ServiceDetail(Map<String, Object> paramM);
    public void getServiceHeader(@Param("parameterMap") ReserveHeaderMap parameterMap);
    public void insertReserveDetail(@Param("parameterMap") ReserveDetail parameterMap);
    public void updateReserveDetail(@Param("parameterMap") ReserveDetail parameterMap);
    public void insertReserveItem(@Param("parameterMap") ReserveItem parameterMap);

    public UserVO selectUserByName(Map<String, Object> paramM);
    public void checkAuthorizedDiscount(@Param("parameterMap") DiscountVO parameterMap);
    public void clearReservePayment(@Param("parameterMap") ReservePayment parameterMap);
    public void clearReservePaymentDetail(@Param("parameterMap") ReservePayment parameterMap);
    public void clearReservePaymentDetailById(Map<String, Object> paramM);
    public void insertReservePayment(@Param("parameterMap") ReservePayment parameterMap);
    public void insertReservePaymentDetail(@Param("parameterMap") ReservePaymentDetail parameterMap);
    public void updateReservePayment(@Param("parameterMap") ReservePayment parameterMap);
    
    public List<ReservePaymentVO> selectReservePayment(Map<String, Object> paramM);
    public List<ReservePaymentDetailVO> selectReservePaymentDetail(Map<String, Object> paramM);
    public List<ServiceHeader> selectServiceHeader(Map<String, Object> paramM);
    public void deleteHtServiceTrackRoomByDetailId(Map<String, Object> paramM);
    public void deleteHtServiceDetail(Map<String, Object> paramM);
    public void insertPayment2Shift(@Param("parameterMap") Payment2Shift parameterMap);
    public void deletePayment2Shift(@Param("parameterMap") Payment2Shift parameterMap);
    public void clearReserveDetailItem(Map<String, Object> paramM);
    
    public void checkRoomBeforeCheckin(@Param("parameterMap") ServiceResultMap parameterMap);
    public void checkServiceCancelJob(@Param("parameterMap") ServiceResultMap parameterMap);        
    
    public void generatePrintReceipt(Map<String, Object> paramM);
    public List<ReservePrintReceiptVO> selectPrintReceipt(Map<String, Object> paramM);
    public List<ReserveItem> selectPrintReceiptDetail(Map<String, Object> paramM);
    
    public Integer getCurrentShiftTransId(Map<String, Object> paramM);
    
}
